﻿#ifndef MyGridLayout1_H
#define MyGridLayout1_H
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QHash>
#include "QCommonWidgets_global.h"
QCOMMWIDGETS_BEGIN_NAMESPACE

class QCOMMONWIDGETS_EXPORT MyGridLayout
{

public:
	/**
     * 构造函数
     *
     * @param
     * @note -
     * @return -
    */
    MyGridLayout(QWidget *parent = nullptr);

    /**
     * 析构函数
     *
     * @param -
     * @note -
     * @return -
     */
    ~MyGridLayout();
	
	/**
     * 添加控件到布局
     *
     * @param - widget:			要添加的控件
     * @param - row:			添加到哪行 (暂时没有实现，只能顺序添加)
     * @param - columnSpan:		添加到哪列
     * @param - row_yes:		是否独占一行
     * @note -
     * @return -
     */
	void AddWidget(QWidget *widget,int row, int col, bool row_yes, Qt::Alignment alignment = Qt::Alignment());
	
	// 添加布局比例
	void addStretch(int stretch);

	/**
     * 设置各子部件之间的垂直间距
     *
     * @param - spacing:		间距
     * @note -
     * @return -
     */
	void setVerticalSpacing(int spacing);
	
	/**
     * 设置各子部件之间的水平间距
     *
     * @param - spacing:		间距
     * @note -
     * @return -
     */
	void setHorizontalSpacing(int spacing);
	
	/**
     * 设置各子部件之间的水平和垂直间距
     *
     * @param - spacing:		间距
     * @note -
     * @return -
     */
	void setHorAndVerSpacing(int spacing);
	
	/**
     * 获取布局完成的管理器
     *
     * @param -
     * @note -
     * @return -
     */
	QVBoxLayout *GetMyGridLayout();

private:
	// 总行数
	uint				row;
	// 总列数
	uint				column;
	// 返回的垂直布局管理器
	QVBoxLayout	*		retLayout;
	// 最终的垂直布局管理器
	QVBoxLayout *		Layout;
	// 水平布局管理器容器
	QHash<int, QHBoxLayout*>	HLayout;
	// 添加的行数管理器容器
	//QList<int>			row_list;
	// 添加的列管理器容器
	QList<int>			col_list;
	// 水平间距
	int					HorizontalSpacing;
	// 垂直间距
	int					VerticalSpacing;
	
};
QCOMMWIDGETS_END_NAMESPACE

#endif // MYGRIDLAYOUT_H
